Media channels, such as audio and video channels, have long been transmitted using application specific cables. More recently, media signals have been transmitted on computer based networks using protocols such as unicast or multicast. Unicast is a method of sending data packets on a computer network to a single destination. Multicast is a protocol for efficiently sending data streams to multiple receivers at the same time on TCP/IP networks by use of a multicast address.
FIG. 1 illustrates a block diagram of a basic infrastructure for a unicast data packet transmission over an IP network. As shown, the transmitting device 10 (e.g., a server) can receive an input stream, such as a video stream, and transmit the data stream as a sequence of data packets in a uncast transmission, for example, over one or more networks 30 to a receiving device 20. One technical problem with this type of existing infrastructure is that in many instances, the one or more networks 30 may be unreliable, which leads to at least a portion of the data packets being lost in transmission.
FIG. 2A illustrates a flow diagram for data packets of the conventional infrastructure shown in FIG. 1. Typically, transmitting device 10 (i.e., the “sender”) can transmit data packets using the UDP (“User Datagram Protocol”) protocol. With this protocol, sender 10 can send messages (i.e., “datagrams”) to the receiving device 20 (i.e., the “recipient”) over an IP network. Advantageously, prior communications are not required in order to set up transmission channels or data paths through the IP network. FIG. 2A illustrates a simple case where sender 10 can send a single packet “P” of data (shown as “S1”) to recipient 20. While the UDP protocol provides checksums for data integrity, it has no handshaking dialogues and exposes the data transmission to any unreliability of the IP network. As a result, there is no guarantee of delivery, ordering, or duplicate protection.
Furthermore, the sender 10 may transmit the data packets using the DTLS (“Datagram Transport Layer Security”) communication protocol to provide communications security for the UDP data packets. In this regard, DTLS allows datagram-based applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. However, the DTLS communication protocol, like UDP, also has to deal with packet reordering, loss of datagrams due to unreliable networks, and the like.
FIG. 2B illustrates a flow diagram of the conventional infrastructure shown in FIG. 1 in which the sender 10 transmits three separate data packets S1, S2 and S3 in sequence. As shown, due to the problems noted above, it is possible that one or more of the data packets (in this case packet S2) is lost during transmission if the underlying IP network is unreliable. As a result, the recipient 20 only receives data packets S1 and S3. Thus, while UDP and DTLS communication protocol provide certain benefits, such as avoiding overhead of processing at the network interface and for time-sensitive applications, these protocols do not have control of datagram delivery, which often results in packet loss in unreliable networks. Moreover, there is no possibility to resend these lost packets using these protocols.
In view of these problems, other protocols and standards have been developed that address the lost packet issue by transmitting a separate packet and/or separate stream to the receiving device. For example, media networks can allow for redundant media packet streams to be transmitted and received, using, for example, the SMPTE 2022-7 communication standard that duplicates the input stream and sends it via two different paths to the destination receiver. However, these technologies are quite complicated and add significant levels of processing and complexity at both the sender 10 and recipient 20.
Accordingly, a system and method is needed for reliably transmitting data using the UDP and DTLS protocols over an otherwise unreliable network.